6.3.3 -
Les serveurs Web :
6.3.3.A - Les aspects
protocolaires :
Le protocole HTTP est utilisé principalement pour le trafic
Internet, c’est à dire le trafic du World Wide Web. HTTP est le
protocole de base du Web. Pour spécifier les connexions (parfois
même d’un autre type que HTTP), on utilise une notation uniforme et
cohérente, appelé URL (Uniform Resource Locator). HTTP est un
service TCP. La plupart des serveurs écoute sur le port 80, mais ce
n’est pas une obligation.
6.3.3.A.1 - Risques du protocole :
Les risques qui peuvent être engendrés via HTTP se posent
à deux niveaux :
- d’un client malveillant vers un serveur HTTP,
- d’un serveur HTTP malveillant à un client
HTTP.
Un attaquant est susceptible de faire subir à un
serveur HTTP ce qu’il ferait subir à n’importe quel serveur,
qu’il s’agisse d’accéder à des données
privées, ou d’obtenir des droits particulier. Une restriction des
données présentes sur le serveur et une bonne configuration vont
permettre de limiter les risques de ce type.
Il existe cependant une
caractéristique spéciale des serveurs HTTP: ceux-ci utilisent
souvent des programmes externes notamment des scripts CGI (Common Gateway
Interface). Pour ces programmes, un agresseur va vouloir les tromper pour les
utiliser à ses fins. Il peut également vouloir installer ses
propres programmes et les faire exécuter sur le serveur.
Les
problèmes de sécurité des clients HTTP sont plus complexes
que pour les serveurs, essentiellement parce que ces clients ont
été conçus pour être extensibles et pour lancer des
programmes externes, dont le rôle sera de traiter certains types de
données (comme faire du streaming vidéo). Un agresseur va tenter
de tirer avantage de ces fonctionnalités, ou bien de faire en sorte que
l’utilisateur du programme client modifie sa configuration ou ajoute des
programmes spécifiques (fournis par l’agresseur sous une fausse
raison), tout cela dans le but d’utiliser le client HTTP comme
l’agresseur le souhaite.
6.3.3.B - Le serveur Apache :
Il existe un grand nombre de logiciels, gratuits ou non permettant de
remplir les fonctionnalités attendues d’un serveur Web.
Néanmoins, les deux logiciels phares sont :
- Le serveur Web Apache [1]avec plus
de 62,5% du marché des serveurs installés,
- Le serveur Internet Information Server de Microsoft avec environ 27,5% du
marché.
La présente étude est donc
focalisée sur ces deux logiciels.
6.3.3.B.1 - La vulnérabilité par
validation d’entrée :
Une attaque par validation d’entrée se
produit lorsque :
- un programme ne parvient pas à reconnaître une entrée
incorrecte du point de vue de la syntaxe ;
- un module ne parvient pas à traiter des champs d’entrée
manquants ;
- une erreur de corrélation de valeur de champ se
produit.
Il existe un certain nombre de possibilités
permettant l’exploitation d’une vulnérabilité par
validation d’entrée. Un cas typique permettant de décrire
cette vulnérabilité est le cas de l’interface PHF. PHF est
un script CGI qui est devenu un standard avec les premières versions du
serveur Web Apache. La version originale de PHF acceptait le caractère de
retour à la ligne (%0A) et exécutait toute commande
subséquente avec les droits de l’utilisateur exécutant le
serveur Web.
6.3.3.C - Le serveur Internet Information Server
(IIS) version 5 :
La version 5 d’Internet Information Server intégré au
système d’exploitation Windows 2000 bénéficie des
progrès de sécurité de ce système
d’exploitation tout en offrant un certain nombre de fonctionnalités
spécifiques.
6.3.3.C.1 - Mécanismes et protocoles de
sécurité supportés par IIS 5 :
Les protocoles de sécurité d’IIS 5.0 sont les
suivants :
prend en charge les normes de
sécurité du gouvernement américain et repose sur
l’architecture DMS (Defense Message System). Celui-ci permet de
protéger la confidentialité, l’intégrité,
l’authentification ainsi que la non-répudiation et de
contrôler l’accès aux messages et aux composants et aux
systèmes. Ces fonctions sont installées avec les logiciels du
serveur et du navigateur.
ce protocole décrit le format des
données chiffrées, notamment les signatures ou les enveloppes
numériques, contenant des informations sécurisées. Les deux
sont des fonctions de certificat d’IIS.
ce protocole décrit le format des
requêtes de certificats soumises aux autorités de
certification.
- Authentification de base :
l’authentification de
base fait partie de la spécification HTTP 1.0. Elle envoie des mots de
passe au format encodé Base64 via les réseaux.
L’authentification de base est une méthode standard très
utilisée pour collecter des informations sur les noms d’utilisateur
et sur les mots de passe. L’avantage de l’authentification de base
est qu’elle fait partie de la spécification HTTP et qu’elle
est prise en charge par la plupart des navigateurs. L’inconvénient
est que les navigateurs Web utilisant l’authentification de base
transmettent des mots de passe non chiffrés.
- Authentification Digest :
l’authentification
Digest, offre les mêmes fonctions que celles de l’authentification
de base mais utilise une méthode de hachage pour transmettre les
autorisations d’authentification. Le serveur génère des
informations supplémentaires qui sont ajoutées au mot de passe
avant le hachage, de façon que personne ne puisse capturer le hachage du
mot de passe et l’utiliser pour se faire passer pour le vrai client. Cette
méthode est plus sûre que l’authentification de base, au
cours de laquelle le mot de passe peut être intercepté et
utilisé par une personne non autorisée.
Les mécanismes
de sécurité implémentés au sein d’IIS 5 sont
les suivants :
- authentification des utilisateurs ;
- utilisation de certificats ;
- contrôle d’accès ;
- chiffrement des données ;
- audits des activités.
6.3.3.C.1.a - Authentification des
utilisateurs :
Les authentifications prises en charge par IIS 5.0 sont les suivantes
:
- Authentification anonyme :
cette méthode permet
aux utilisateurs d’accéder aux domaines publics du site Web ou FTP
sans présentation d’un nom d’utilisateur ou d’un mot de
passe. Si l’authentification anonyme est activée, IIS essaiera
toujours, dans un premier temps, d’authentifier avec cette technique,
même si d’autres méthodes sont également
activées. Lorsqu’un utilisateur tente de se connecter à un
site Web ou FTP, le serveur Web lui affecte un compte d’utilisateur
Windows nommé IUSR_nom_ordinateur, dans lequel nom_ordinateur est le nom
du serveur IIS.
- Authentification FTP de base :
pour établir une
connexion FTP avec le serveur Web par l'intermédiaire de
l’authentification FTP de base, les utilisateurs doivent se connecter avec
un nom d’utilisateur et un mot de passe correspondant à un compte
d’utilisateur Windows valide. La transmission des informations de
connexion est faite de manière non chiffrée.
- Authentification FTP anonyme :
le serveur FTP peut
être configuré pour accorder l’accès anonyme aux
ressources FTP. Si l’authentification FTP anonyme est activée, IIS
essaiera toujours, dans un premier temps, d’utiliser cette technique,
même si l’authentification de base est activée. Si cette
méthode d’authentification est retenue pour une ressource, toutes
les requêtes visant cette ressource seront acceptées sans que
l’utilisateur ait besoin d’un nom d’utilisateur ou d’un
mot de passe.
- Authentification intégrée dans
Windows :
connue sous l’appellation
d’authentification par question/réponse Windows NT ou NTLM dans les
versions précédentes d’Internet Information Server,
l’authentification intégrée de Windows est une
méthode sûre, dans la mesure où le nom d’utilisateur
et le mot de passe ne sont pas envoyés sur le réseau. Au lieu de
cela, le navigateur de l’utilisateur prouve qu’il connaît le
mot de passe par le biais d’un échange cryptographique avec le
serveur Web (éventuellement à l’aide de connexions
Kerberos).
l’authentification intégrée Windows présente
deux limites :
- D’une part, seul Microsoft Internet Explorer version 2.0 ou
ultérieure prennent en charge cette méthode
d’authentification.
- D’autre part, l’authentification intégrée Windows
ne fonctionne pas avec les connexions Proxy HTTP.
6.3.3.C.1.b - Utilisation de
certificats :
Internet Information Server v5 permet la mise en place de communications
SSL v3 (présence d’un certificat coté serveur et coté
client).
- - Stockage des certificats :
Internet
Information Server présente une grave erreur de conception concernant la
zone de stockage des certificats. En effet la seule possibilité offerte
par Microsoft est la zone de stockage CryptoAPI excluant par la même tout
dispositif matériel.
6.3.3.C.1.c - Contrôle
d’accès :
IIS 5.0 utilise deux niveaux de contrôle d’accès : les
autorisations Web et les permissions NTFS. Les autorisations Web
s’appliquent à tous les clients HTTP et déterminent quels
sont les verbes HTTP pouvant être utilisés pour accéder aux
ressources du serveur. Les autorisations NTFS définissent le niveau
d’accès aux répertoires et aux fichiers du serveur pour
chaque compte d’utilisateur.
6.3.3.C.1.d - Chiffrement des
données :
Internet Information Server permet l’établissement de
communications SSL chiffrées sur 128 bits.
6.3.3.C.1.e - Audit des
activités :
Les administrateurs peuvent utiliser des techniques d’audit de
sécurité pour surveiller différents utilisateurs et
l’activité de sécurité du serveur Web. La
procédure d’audit consiste à créer des
stratégies de surveillance pour l’accès aux fichiers et aux
répertoires ou pour les événements du serveur. Elle
consiste également à surveiller les journaux de
sécurité afin de détecter toute tentative
d’accès par des personnes non autorisées.
6.3.3.D - Comparaison Apache / Internet
Information Server :
L’ensemble des fonctionnalités présentes sur Internet
Information Server peut être retrouvé sur Apache (à
l’exception du support du langage de développement de pages
dynamiques ASP propriétaire Microsoft). La conception modulaire du
système Unix, système d’exploitation de prédilection
d’Apache (la version Windows du logiciel Apache ne peut être
réellement considérée comme sérieuse) font du couple
Unix/Apache la seule réelle solution sécurisée de serveur
Web. Le nombre d’attaques découvertes régulièrement
sur Internet Information Server font que ce logiciel ne doit être retenu
que pour sa simplicité d’administration (à l’inverse
d’Apache) et dans le cas d’un passif important en langage
ASP.
[1] Source Netcraft (cf annexe
3 - ) – Population testée de
38,382,017 serveurs Web.